#ifndef LORA_INTERFACE_H
#define LORA_INTERFACE_H

#ifdef __cplusplus
extern "C"
{
#endif

#include <stdint.h>
#include <stdbool.h>
#include <time.h>

void lora_set_send_mode(void);
void lora_set_recv_mode(void);
void lora_set_idle_mode(void);

void lora_handle_rx_error(void);

bool lora_client_need_find_server(void);
int32_t lora_client_wait_random_ms(void);
void lora_client_find_server(void); // slave -> master
void lora_server_assign_client_addr(void);
void lora_server_send_assign_client_addr(void);
void lora_client_proc_addr(void);

bool lora_server_need_send_cmd(void);
void lora_server_send_cmd(void);
void lora_client_handle_cmd(void);  // server->client
void lora_client_send_cmd_rsp(void);    // client->server
void lora_server_handle_cmd_rsp(void);

void lora_send(uint8_t* buf, uint8_t len);
void lora_recv(uint8_t* buf, uint8_t* len);


#ifdef __cplusplus
}
#endif
#endif // LORA_INTERFACE_H
